﻿// See https://aka.ms/new-console-template for more information
//
/*

*/




using System.Data;

namespace CXXIN  //项目的命名空间，一个类必须要包含在指定命名空间里面  CXXIN：项目名称
         //项目只有一个命名空间，一个命名空间下面可以有多个类
{
    class Program  //class表示一个类，代码都在class里面，class是程序的基本单元  ，声明一个类
    {
        static void Main(string[] args)//main函数，static程序的入口方法：启动时，首先执行的内容
        {
            int a = 1, b = 2;
            Console.WriteLine("C#对接程序");// Console.WriteLine函数：输出，打印   Console：控制台，WriteLine：控制台中打印一段话
            string x=Console.ReadLine();             // Console.ReadLine():获取用户通过控制台输入的信息，
                                                     // 从控制台中读取的数据类型都是字符串类型string
                                                     // int x=int.Parse(Console.ReadLine());从控制台取整型需转换类型
            Console.WriteLine("你输入的信息是："+a);// Console.WriteLine函数：输出，打印
            Console.WriteLine("a={0}b={1}", a, b);//输出后换行
            Console.WriteLine("姓名\t年龄\t班级");
            Console.WriteLine("a={0}\tb={1}", a, b);

        }

    }

}

//.cs文件：c sharp 文件C#

//using:关键字，表示引入，引入后可以使用命名空间下面的所有类，相当于c中的#inculde
//exe文件：编译后生成的可执行文件，里面是IL指令  可用IL DASM查看（电脑c盘搜索小写ildasm）

//dll文件：编译后生成的动态链接库文件，里面是IL指令

//pdb文件：程序调试数据库文件Program Debgu DataBase:包含了编译后程序指向源代码的位置信息，用于调试定位源码，方便调试

//vshost.exe文件：用于提高调试效率的宿主进程（任务管理器中可观察），vs运行调试时，打开的是这个文件

//vshost.exe.mainfest文件：是一个XML文件，用于com类接口库的绑定和激活，用来描述信息

/*
C#的Main：
程序的入口方法，程序从这里开始运行
一个程序只能有一个Main方法，首字母要大写，返回值为void或者int，命令形参数是可选的
 Main方法的形式
1：static void Main(string[] args){ }
2：static int  Main(string[] args){ }
3：static void Main(){ }
4：static int  Main(){ }

单行注释与多行注释和C语言方式一致
C#文档注释：
在class中，写出相加函数，然后在相加函数上方输入3个///就会自动跳出来
        /// <summary>
        /// 两个整数相加
        /// </summary>
        /// <param name="a">第一个整数</param>
        /// <param name="b">第二个整数</param>
        /// <returns></returns>
        static int Add(int a, int b)
        {
            return a + b;
        }

C#代码折叠器region：

#region 折叠器使用方法
//代码
//代码
//代码
#endregion



C#结构：
类
类必须放在指定的命名空间中
方法、属性、字段的定义必须放在类中
普通语句的执行必须放在方法中

字符串的定义必须使用双引号


面向对象编程三大特性
1.封装：隐藏内部实现细节，模块开发者只关心内部实现，模块调用者只关心接口适用
避免代码外漏，快速应用，团队协作
类是程序基本单元，代码被封装在类中，一个类是一个单元（一个封装），方法也是一定程度的封装，模块是对类的封装，系统也是封装的体现

2.继承：代码复用技术
一处更新，处处使用

3.多态：让一个对象的接口可以根据不同的请求，做出不同的响应


开发者必须要掌握的各种原则：
1.单一职责：一个对象只做好一件事，功能太多会引起代码混乱，维护麻烦

2.开放封闭原则：需求变化时，尽量减少类的修改，而是通过扩展来完成，封闭修改，开放扩展

变量：表示一个数据存储空间，即内存地址的别名
内存地址是一串十六进制数非常不好记，通过变量可以快速找到数据

变量的三要素
变量类型：规定变量的数据类型
变量名：有意义，好记住
变量值：变量对应的内存数据

数据类型作用：
1.不同数据放在不同内存块中，好管理内存数据
2.不同数据类型占用存储空间大小不一样

C#数据类型分类
整型：int：用于存储整数
浮点类型：double：用于存储小数
字符串：string：用来存储一串字符
布尔类型：bool：用于表示一个条件是否成立，只有两个值：true/flase
日期时间：DataTime：用于存储日期和时间

声明变量：与C语言一样
int age=0;//创建一个int类型的变量，变量名为age，并初始化赋值0

常量定义：不能被修改的变量，与C语言一样
const 数据类型 常量名称 = 值 ； //常量必须在定义时进行初始化，常量名称要全部大写

枚举定义规范
访问修饰符 enum 枚举名 {值1，值2}
定义枚举时，不能包含方法，一般定义在类的外部



Console类的使用：属于静态类，选中类名，按下F1可以看类的说明

Console.WriteLine("要输出的内容");//输出后换行
Console.Write("要输出的内容");//输出后不换行
Console.WriteLine();//相当于换行

格式化输出：
1，占位符：{0}、{1}、{2}。。。与变量列表中的变量前后对应
Console.WriteLine("a={0}b={1}",a,b);//{0}表示a的内容，1表示b的内容

列表显示方式:\t制表符
Console.WriteLine("姓名\t年龄\t班级";
Console.WriteLine("a={0}\tb={1}",a,b);

两个字符串相加就是将两个字符串拼接在一起






 */


